﻿using System;
using System.Collections.Generic;


namespace ADV_Evaluator { 

    /// <summary>
    /// シナリオ内で使う変数を集めたハッシュ。変数の値は現状ではint型。
    /// </summary>
    [Serializable]
    class VariableList {

        private Dictionary<string, int> data;

        /// <summary>
        /// コンストラクタ
        /// </summary>
        public VariableList() {
            data = new Dictionary<string, int>();
        }

        /// <summary>
        /// インデクサ
        /// </summary>
        /// <param name="name">変数名</param>
        /// <returns>変数の値。未定義のキーなら０。</returns>
        public int this[string name] {
            get {
                if (Exists(name)) {
                    return data[name];
                } else {
                    return 0;
                }
            }
            set {
                data[name] = value;
            }
        }

        /// <summary>
        /// 指定した変数名が存在するか確かめる
        /// </summary>
        /// <param name="name">変数名</param>
        /// <returns>存在すればtrue</returns>
        public bool Exists(string name) {
            return data.ContainsKey(name);
            
        }

        /// <summary>
        /// 指定した変数名のデータを削除する
        /// </summary>
        /// <param name="name">変数名</param>
        public void Delete(string name) {
            if (Exists(name)) {
                data.Remove(name);
            }
        }

        /// <summary>
        /// 全てのデータを消去
        /// </summary>
        public void Clear() {
            data.Clear();
        }



    }

}
